package com.ocom.payconfig.service.impl;

import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.ocom.common.entity.payconfig.EntityFeeItemPlan;
import com.ocom.common.enums.DataSourceEnum;
import com.ocom.common.enums.MasterSlaveEnum;
import com.ocom.common.utils.CommonUtil;
import com.ocom.mysql.aspect.DataSourceAspect;
import com.ocom.payconfig.dao.IDaoFeeItemPlan;
import com.ocom.payconfig.service.FeeItemPlanService;
import icu.mhb.mybatisplus.plugln.base.service.impl.JoinServiceImpl;
import org.springframework.stereotype.Service;

/**
 * <p>
 * 缴费项目 服务实现类
 * </p>
 *
 * @author zhuhui
 * @since 2025年4月21日15:31:03
 */
@Service
public class FeeItemPlanServiceImpl extends JoinServiceImpl<IDaoFeeItemPlan, EntityFeeItemPlan> implements FeeItemPlanService {


    @Override
    @DataSourceAspect(type = DataSourceEnum.PART_DB, isMaster = MasterSlaveEnum.MASTER)
    public boolean addFeeItemPlan(Long companyId, EntityFeeItemPlan entityFeeItemPlan) {
        return this.save(entityFeeItemPlan);
    }

    @Override
    @DataSourceAspect(type = DataSourceEnum.PART_DB, isMaster = MasterSlaveEnum.MASTER)
    public boolean editFeeItemPlan(Long companyId, EntityFeeItemPlan entityFeeItemPlan) {
        LambdaUpdateWrapper<EntityFeeItemPlan> updateWrapper=new LambdaUpdateWrapper<>();
        updateWrapper.eq(EntityFeeItemPlan::getComId,companyId);
        updateWrapper.eq(EntityFeeItemPlan::getItemId,entityFeeItemPlan.getItemId());
        if(entityFeeItemPlan.getDayAmount()!=null){
            updateWrapper.set(EntityFeeItemPlan::getDayAmount,entityFeeItemPlan.getDayAmount());
        }
        if(entityFeeItemPlan.getIfLeave()!=null){
            updateWrapper.set(EntityFeeItemPlan::getIfLeave,entityFeeItemPlan.getIfLeave());
        }
        if(entityFeeItemPlan.getTagId()!=null){
            updateWrapper.set(EntityFeeItemPlan::getTagId,entityFeeItemPlan.getTagId());
        }
        if(!CommonUtil.isNull(entityFeeItemPlan.getDateList())){
            updateWrapper.set(EntityFeeItemPlan::getDateList,entityFeeItemPlan.getDateList());
        }
        return this.update(updateWrapper);
    }
}
